#ifndef JEU_PRIVATE_H_
#define JEU_PRIVATE_H_

#include "JeuCombat_private.h"
#include "JeuEpreuve.h"
#include "Plateau.h"

/**
 * \struct _Jeu
 * \brief Définie la structue interne du jeu
 */ 
struct _Jeu{
	Plateau* plateau;	/*< Plateau dans lequel les personnages évolues */
	List* joueurs;		/*< liste des joueurs du jeu */
	ListIterator* it;	/*< Iterator pointant sur le joueur actuel */
	Personnage* hero;	/*< Personnage actuel, il n'est ici que pour des raisons de facilité et peu être retrouver en demandant au joueur quel est son personnage actuel (permet de se souvenir de la réponse du joueur sans lui redemander) */
	int fini;			/*< booléen, 1 si le jeu est finit, 0 sinon */
	ModeJeu mode;		/*< Mode dans lequel se trouve le jeu */
	union{
		JeuCombat combat;	/* Informations supplémentaires pour le mode Combat */
		JeuEpreuve epreuve;	/* Informations supplémentaires pour le mode epreuve */
	} u;
};

#include "Jeu.h"

/* Getters */
ListIterator* jeuGetIt(Jeu* jeu);


/* Settlers */
void jeuSetPlateau(Jeu* jeu,Plateau* p);
void jeuSetJoueurs(Jeu* jeu,List* joueurs);
void jeuSetIt(Jeu* jeu,ListIterator* it);
void jeuSetHero(Jeu* jeu,Personnage* perso);
void jeuSetMode(Jeu* jeu,ModeJeu mj);

/* Méthodes */
Personnage* jeuGetNextHero(Jeu* jeu);

#endif /*JEU_PRIVATE_H_*/
